/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package beans;

import banco.ConexaoBD;
import banco.UsuarioDAO;
import java.io.Serializable;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;


/**
 *
 * @author Joao
 */

@ManagedBean(name = "professor")
@SessionScoped
public class Professor implements Serializable {

    private String nome, titulo, classe, carga_horaria, rj, nivel, fim_contrato;
    private String endereco, cidade, uf, cep, fone, celular, email, matricula, cpf, pis_paseb, banco, agencia, conta_corrente;
    private String ativo, afastado, RG, admissaoStr, outrobanco = null;

    private Date admissao, exoneracao;

    private Encargo encargo = new Encargo();
    private Afastamento afastamento = new Afastamento();
    private Projetos projetos = new Projetos();
    private PromocaoCarreira promocoesCarreira = new PromocaoCarreira();
    private LicencaPremio licencas = new LicencaPremio();
    private SelecaoMonitoria monitoria = new SelecaoMonitoria();
    private SelecaoSubstituto selSubstituto = new SelecaoSubstituto();
    private Seminario seminario = new Seminario();

    UsuarioDAO user = new UsuarioDAO(ConexaoBD.getConexaoBD());

    public Professor(){
        
    }
    
    public Professor (String nome, int RG){
        this.nome = nome;
        this.RG = String.valueOf(RG);
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getRj() {
        return rj;
    }
    public void setRj(String rj) {
        this.rj = rj;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String converteData (Date data){

        if (data == null)
            return "Data nao selecionada";
        
        String aux;

        SimpleDateFormat out = new SimpleDateFormat("EEE, d, MMM, yyyy");
        //aux = out.format(admissao);
        aux = out.format(data);

        return aux;
    }

    public Date getAdmissao() {
       return admissao;
    }

    public void setAdmissao(Date admissao) {
        System.out.println("Professor " + admissao);
        this.admissao = admissao;
    }

    public String isAfastado() {
        return afastado;
    }

    public void setAfastado(String afastado) {
        this.afastado = afastado;
    }

    public String getAgencia() {
        return agencia;
    }

    public void setAgencia(String agencia) {
        this.agencia = agencia;
    }

    public String getAtivo() {
        return ativo;

    }

    public void setAtivo(String ativo) {
        this.ativo = ativo;
    }

    public String getBanco() {
        return banco;
    }

    public void setBanco(String banco) {
        this.banco = banco;
    }

    public String getCarga_horaria() {
        return carga_horaria;
    }

    public void setCarga_horaria(String carga_horaria) {
        this.carga_horaria = carga_horaria;
    }

    public String getOutrobanco() {
        return outrobanco;
    }

    public void setOutrobanco(String outrobanco) {
        this.outrobanco = outrobanco;
    }

    public String getRG() {
        return RG;
    }

    public void setRG(String RG) {
        this.RG = RG;
    }

    public String getCelular() {
        return celular;
    }

    public void setCelular(String celular) {
        this.celular = celular;
    }

    public String getCep() {
        return cep;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }

    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public String getClasse() {
        return classe;
    }

    public void setClasse(String classe) {
        this.classe = classe;
    }

    public String getConta_corrente() {
        return conta_corrente;
    }

    public void setConta_corrente(String conta_corrente) {
        this.conta_corrente = conta_corrente;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Date getExoneracao() {
        return exoneracao;
    }

    public void setExoneracao(Date exoneracao) {
        this.exoneracao = exoneracao;
    }

    public String getFim_contrato() {
        return fim_contrato;
    }

    public void setFim_contrato(String fim_contrato) {
        this.fim_contrato = fim_contrato;
    }

    public String getFone() {
        return fone;
    }

    public void setFone(String fone) {
        this.fone = fone;
    }

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    public String getNivel() {
        return nivel;
    }

    public void setNivel(String nivel) {
        this.nivel = nivel;
    }

    public String getPis_paseb() {
        return pis_paseb;
    }

    public void setPis_paseb(String pis_paseb) {
        this.pis_paseb = pis_paseb;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public String getUf() {
        return uf;
    }

    public void setUf(String uf) {
        this.uf = uf;
    }

    public String retorna() throws SQLException {
        System.out.println("entrou no reenvia");
        return "indexAdm.xhtml";
    }

    public String aplica() throws SQLException {
       
        if (!outrobanco.equals("")) {
            banco = outrobanco;
        }
          
          user.setProfessor(nome, RG, cpf, ativo, banco, agencia, conta_corrente, nivel, carga_horaria, titulo, email, uf, cidade, cep, endereco,
                matricula, pis_paseb, fone, celular, converteData(admissao), converteData(exoneracao), rj, classe);

          return "indexAdm.xhtml";
    }

    public void enviaBanco() {
    }

    public void exibeProfessores(){
        
    }

    @Override
        public boolean equals(Object obj) {
                if(obj == null)
                        return false;
                if(!(obj instanceof Professor))
                        return false;

                Professor compare = (Professor) obj;

                return compare.RG.equals(this.RG);
        }

        @Override
        public int hashCode() {
            int hash = 1;
            return hash * 31 + nome.hashCode();
        }

        @Override
        public String toString() {
                return nome;
        }
}
